package e2.entities;

import java.io.Serializable;
import javax.persistence.*;

import java.util.List;
import java.util.Calendar;
import static javax.persistence.TemporalType.DATE;
import javax.persistence.OneToMany;

import e2.entities.AtividadeDoPlanoDeEstagio;
import e2.entities.AvaliacaoPlanoDeEstagio;

/**
 * Entity implementation class for Entity: PlanoDeEstagio
 *
 */
@Entity
public class PlanoDeEstagio implements Serializable {

    @Id
    private long id;
    private static final long serialVersionUID = 1L;
    /**
     * @uml.annotations for
     * <code>avaliacoes</code>
     * collection_type="e2.entidades.AvaliacaoPlanoDeEstagio"
     */
    @OneToMany(mappedBy = "planoDeEstagio")
    private List<AvaliacaoPlanoDeEstagio> avaliacoes;
    @ManyToOne
    private EstadoDoPlanoDeEstagio estadoDoPlanoDeEstagio;
    @OneToOne
    private Estagio estagio;
    private String areaDeAtuacao;
    @Temporal(DATE)
    private Calendar dataDeElaboracao;
    @Temporal(DATE)
    private Calendar dataDeAvaliacao;
    /**
     * Pode ser: Obrigatório, não Obrigatório, Supervisionado, ETC. 
	 *
     */
    private String tipoDeEstagio;
    private String cargaHorariaPorSemana;
    /**
     * @uml.annotations for
     * <code>atividadesDoPlanoDeEstagio</code>
     * collection_type="e2.entidades.AtividadeDoPlanoDeEstagio"
     */
    @OneToMany(mappedBy = "planoDeEstagio")
    private List<AtividadeDoPlanoDeEstagio> atividadesDoPlanoDeEstagio;

    public PlanoDeEstagio() {
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public List<AvaliacaoPlanoDeEstagio> getAvaliacoes() {
        return avaliacoes;
    }

    public void setAvaliacoes(List<AvaliacaoPlanoDeEstagio> avaliacoes) {
        this.avaliacoes = avaliacoes;
    }

    public String getAreaDeAtuacao() {
        return areaDeAtuacao;
    }

    public void setAreaDeAtuacao(String areaDeAtuacao) {
        this.areaDeAtuacao = areaDeAtuacao;
    }

    public Calendar getDataDeElaboracao() {
        return dataDeElaboracao;
    }

    public void setDataDeElaboracao(Calendar dataDeElaboracao) {
        this.dataDeElaboracao = dataDeElaboracao;
    }

    public Calendar getDataDeAvaliacao() {
        return dataDeAvaliacao;
    }

    public void setDataDeAvaliacao(Calendar dataDeAvaliacao) {
        this.dataDeAvaliacao = dataDeAvaliacao;
    }

    public String getTipoDeEstagio() {
        return tipoDeEstagio;
    }

    public void setTipoDeEstagio(String tipoDeEstagio) {
        this.tipoDeEstagio = tipoDeEstagio;
    }

    public String getCargaHorariaPorSemana() {
        return cargaHorariaPorSemana;
    }

    public void setCargaHorariaPorSemana(String cargaHorariaPorSemana) {
        this.cargaHorariaPorSemana = cargaHorariaPorSemana;
    }

    public List<AtividadeDoPlanoDeEstagio> getAtividadesDoPlanoDeEstagio() {
        return atividadesDoPlanoDeEstagio;
    }

    public void setAtividadesDoPlanoDeEstagio(List<AtividadeDoPlanoDeEstagio> atividadesDoPlanoDeEstagio) {
        this.setAtividadesDoPlanoDeEstagio(atividadesDoPlanoDeEstagio);
    }

    /**
     * @return the estado
     */
    public EstadoDoPlanoDeEstagio getEstadoDoPlanoDeEstagio() {
        return estadoDoPlanoDeEstagio;
    }

    /**
     * @param estado the estado to set
     */
    public void setEstadoDoPlanoDeEstagio(EstadoDoPlanoDeEstagio estado) {
        this.estadoDoPlanoDeEstagio = estado;
    }

    /**
     * @return the estagio
     */
    public Estagio getEstagio() {
        return estagio;
    }

    /**
     * @param estagio the estagio to set
     */
    public void setEstagio(Estagio estagio) {
        this.estagio = estagio;
    }
}
